27.4 »ClickOnce«-Verteilung
 
Das Visual Studio 2005 bietet neben dem auf einer MSI-Datei basierenden Installationsassistenten eine zweite Möglichkeit, eine Windows-Anwendung zu verteilen. Diese wird als ClickOnce bezeichnet. Ganz neu ist die Idee, die hinter ClickOnce steckt, nicht, ist aber im Vergleich zu ähnlichen deutlich verbessert.
Doch was steckt hinter ClickOnce? Während eine herkömmliche Windows-Anwendung auf dem lokalen Rechner installiert wird, kann eine mit ClickOnce veröffentlichte Anwendung auf einem Server zur Verfügung gestellt werden. Dabei kann es sich um einen Webserver oder um eine Netzwerkdateifreigabe handeln. Zudem ist die Veröffentlichung auf einem CD-ROM-Datenträger möglich.
Wird eine Anwendung mit ClickOnce auf einem Webserver veröffentlicht, wird dem Benutzer innerhalb einer Webseite nur ein Link auf die Programmdatei zur Verfügung gestellt. Öffnet der Anwender den Link, werden die Programmdateien auf die lokale Maschine heruntergeladen und dort ausgeführt. Dabei werden die downgeloadeten Dateien nicht etwa in einem Unterordner von Programme abgelegt, sondern in einem verschlüsselten Pfad im Benutzerprofil des aktuell angemeldeten Anwenders (Dokumente und Einstellungen\<Benutzer>\Lokale Einstellungen\Apps). Aus Sicherheitsgründen macht eine mit ClickOnce verteilte Anwendung weder Einträge in der Registrierungsdatenbank noch unter Desktop.
Ein besonderes Merkmal ist auch die Art und Weise der Aktualisierung. Bei der Bereitstellung mit der Installationsroutine muss der Benutzer bei jeder Aktualisierung einer Anwendung die gesamte Anwendung neu installieren. Bei der ClickOnce-Bereitstellung werden Aktualisierungen der Anwendung automatisch zur Verfügung gestellt. Der Client ist dabei selbst in der Lage festzustellen, ob eine neue Version vorliegt. Bei der Aktualisierung werden nur die Teile der Anwendung heruntergeladen, die geändert wurden. Anschließend wird die vollständige aktualisierte Anwendung von einem neuen parallelen Ordner aus neu installiert.
ClickOnce bietet die Möglichkeit, Anwendungen so einzurichten, dass der Benutzer sowohl online als auch offline mit der Anwendung arbeiten kann. Im Offline-Modus wird ein Programmpunkt im Startmenü angelegt, der die Anwendung startet. Diesen Eintrag gibt es nicht, wenn der Benutzer nur online mit der Anwendung arbeiten kann. Er kann die Anwendung nur starten, wenn er auf den erwähnten Link klickt.
Der Kern der neuen Architektur beruht auf zwei XML-Manifestdateien:
|
dem Anwendungsmanifest |
|
dem Bereitstellungsmanifest |
Das Anwendungsmanifest beschreibt die Anwendung einschließlich der Assemblies und der Dateien, aus denen die Anwendung besteht, sowie des Speicherorts, an dem Updates verfügbar sein werden. Das Bereitstellungsmanifest beschreibt, wie die Anwendung bereitgestellt wird, einschließlich des Speicherorts des Anwendungsmanifests sowie der Version der Anwendung, die auf den Clients ausgeführt wird. Beide Manifeste werden automatisch vom Visual Studio 2005 erzeugt.
Das Ziel von ClickOnce ist, die Verteilung von Anwendungen zentral zu verwalten und zu vereinfachen. Aber es gibt auch Einschränkungen, die schon in der Planungsphase zu berücksichtigen sind. Während der Einrichtung einer ClickOnce-Anwendung sind keine Operationen erlaubt, die administrative Rechte voraussetzen. Dazu gehören der Zugriff auf das Dateisystem und der Zugriff auf die Registrierungsdatenbank. Genauso wenig dürfen Assemblies in den GAC eingetragen oder Windows-Dienste eingerichtet werden.
27.4.1 Erstellen einer ClickOnce-Anwendung
 
So viel zur Theorie. Nun wollen wir uns natürlich auch das Ganze in der praktischen Entwicklung ansehen. Legen Sie ein neues Windows-Projekt an. Um ClickOnce zu verstehen, müssen Sie überhaupt keinen Code schreiben, es reicht die »nackte« WinForm vollkommen aus.
Alle Optionen, die ClickOnce anbietet, können Sie innerhalb eines Dialoges festlegen. Öffnen Sie dazu das Eigenschaftsfenster des Projekts, und aktivieren Sie die Lasche Veröffentlichen. In Abbildung 27.30 sehen Sie die Registerkarte. Alle Einstellungen, die Sie hier vornehmen, werden gespeichert und stehen beim Veröffentlichen auf dem Server zur Verfügung.
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.30 Die »ClickOnce«-Optionen einer Windows-Anwendung
Entscheidend ist zunächst einmal die Lokalität, auf der die ClickOnce-Komponente abgelegt wird. Als Veröffentlichungsort ist per Vorgabe ein virtuelles Verzeichnis auf dem lokalen Webserver eingetragen. Über die Schaltfläche gelangen Sie aber zu einem Dialog, der Ihnen alle Möglichkeiten offen lässt. Sie können einen der folgenden Orte angeben, an dem die Anwendung kopiert werden soll:
|
einen Dateipfad |
|
auf dem lokalen Webserver (IIS) |
|
auf einem FTP-Server |
|
auf einer entfernten Website, die mit den FrontPage-Servererweiterungen konfiguriert ist |
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.31 Dialog zum Einstellen des Orts der Veröffentlichung
Als Installationsmodi müssen Sie sich zwischen online und offline entscheiden. Fällt die Wahl auf Offline-Modus, werden für die Anwendung ein Startmenüeintrag und ein Eintrag in den Systemeinstellungen unter Software hinzugefügt. Hierüber kann der Anwender später unter Umständen die Anwendung auch wieder deinstallieren.
Beachten Sie, dass Sie im Offline-Modus über die dann aktivierte Schaltfläche Updates. auch das Updaten beeinflussen können. Den Dialog sehen Sie in Abbildung 27.32. Vorgegeben ist, dass die Anwendung nach Updates suchen soll. Wenn Sie sicher sind, dass Ihre Software so gut ist, dass kein Update zu erwarten ist, können Sie diese Option auch deaktivieren. Andernfalls können Sie die Häufigkeit der Update-Prüfung konfigurieren.
Ein Klick auf die Schaltfläche Anwendungsdateien. in der Registerkarte Veröffentlichen öffnet den Dialog, den Sie in Abbildung 27.33 sehen. Hier können Sie angeben, welche Dateien auf den Server kopiert werden sollen. Im vorliegenden Fall handelt es sich nur um die Programmdatei. Wäre eine benutzerdefinierte Klassenbibliothek unter Verweise eingebunden, würde die DLL automatisch mit in den Verteilungsprozess einbezogen.
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.32 Konfiguration der Update-Suche
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.33 Die zur Installation notwendigen Dateien
Im Dialog Erforderliche Komponenten. lassen sich die Komponenten auswählen, die ebenfalls auf den Server kopiert werden sollen (siehe Abbildung 27.34).
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.34 Bereitstellung zusätzlicher Komponenten
Zuletzt können Sie noch unter Optionen. diverse Einstellungen, mehr allgemeiner Natur, vornehmen.
Nachdem Sie die Konfiguration fertig gestellt haben, steht der Veröffentlichung nichts mehr im Wege. Ich gehe im Weiteren davon aus, dass die Anwendung auf den lokalen Webserver kopiert wird und die Offline-Ausführung der ClickOnce-Anwendung ausgewählt worden ist. Auf dem Webserver wird ein virtuelles Verzeichnis angelegt, das standardmäßig namentlich identisch mit dem Projektbezeichner ist. Das Verzeichnis enthält neben dem Bereitstellungsmanifest (das ist die Datei mit der Erweiterung .APPLICATION) auch eine setup.exe, welche die Installation startet, sowie die Datei publish.htm, die der Anwender aufruft, um die Anwendung zu installieren.
Zudem wird der Root der Anwendung ein Unterverzeichnis hinzugefügt, dessen Name sich aus dem Bezeichner der Anwendung, ergänzt um die vierstellige Versionsnummer, ergibt. Die Punkte der Versionsnummer sind dabei gegen Unterstriche ausgetauscht. Dieses Verzeichnis enthält die tatsächlichen Anwendungsdaten und das Anwendungsmanifest mit der Erweiterung .MANIFEST.
27.4.2 Die Installation einer ClickOnce-Anwenndung
 
Nun wollen wir auch noch die Anwendung installieren. Dazu öffnen wir im Internet Explorer die Datei publish.htm. Die Webseite enthält eine Schaltfläche, über welche die Anwendung im lokalen Cache eingerichtet wird. Zuvor müssen Sie jedoch die Installation der Anwendung bestätigen, da der Herausgeber als nicht vertrauenswürdig eingestuft wird – obwohl Sie das in diesem Fall selbst sind. Anschließend wird das Programm gestartet.
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.35 Die Ansicht der Seite »publish.htm«
Da die Anwendung für den Offline-Modus eingerichtet worden ist, können Sie diese nachfolgend über das Startmenü starten. Dazu ist keine Verbindung zum Webserver notwendig. Sie können das selbst testen, indem Sie im Internetdienste-Manager den Webserver anhalten. Es wird zwar versucht, Kontakt zum Webserver aufzunehmen, aber das Starten der Laufzeit ist nicht davon abhängig. Hätten Sie sich für den Online-Modus bei der Kompilierung der Anwendung entschieden, wäre ein Aufruf von publish.htm notwendig gewesen. Diese steht aber nur dann zur Verfügung, wenn der Webserver seine Dienste ausführt.
Wie verhält sich nun die Anwendung, wenn sie in irgendeiner Weise verändert und erneut veröffentlicht wird? Sie können das sehr einfach testen, indem Sie der Form eine Schaltfläche hinzufügen oder einfach nur die Hintergrundfarbe ändern. Veröffentlichen Sie die Anwendung erneut, wird automatisch die Versionsnummer erhöht – falls Sie in der Registerkarte Veröffentlichen des Projekteigenschaftsfensters keine anderen Vorgabe getroffen haben (siehe Abbildung 27.30). Die erste Versionsnummer lautete 1.0.0.0, die neue 1.0.0.1. Auf dem Webserver wird ein zweites Unterverzeichnis für die neue Version angelegt, im Bereitstellungsmanifest wird die Umleitung darauf eingetragen.
Der Start der Anwendung über das Startmenü führt zu einer Suche des Clients nach eventuellen Updates. Ist der Webserver in Betrieb, wird die neue Version erkannt, geladen und ausgeführt. Der Anwender braucht in diesem Fall in keiner Weise einzugreifen oder selbst für die Neuinstallation der Anwendung zu sorgen, der ClickOnce-Prozess übernimmt das vollkommen automatisch.
 Hier klicken, um das Bild zu vergrößern
Abbildung 27.36 Die ClickOnce-Anwendung im Internetdienste-Manager |